package logic;

import dao.MedicoDAO;
import dto.CoberturaDTO;
import dto.MedicoDTO;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author the_rub
 */
public class Medico {

  private int id;
  private String nombre;
  private String apellido;
  private int dni;
  private String matricula;
  private int idEspecialidad;
  private String telLinea;
  private String celular;

  public Medico(int id, String nombre, String apellido, int dni, String matricula, int idEspecialidad, String telLinea, String celular) {
    this.id = id;
    this.nombre = nombre;
    this.apellido = apellido;
    this.dni = dni;
    this.matricula = matricula;
    this.idEspecialidad = idEspecialidad;
    this.telLinea = telLinea;
    this.celular = celular;
  }

  public Medico(MedicoDTO dto) {
    this.id = dto.getId();
    this.nombre = dto.getNombre();
    this.apellido = dto.getApellido();
    this.dni = dto.getDni();
    this.matricula = dto.getMatricula();
    this.idEspecialidad = dto.getIdEspecialidad();
    this.telLinea = dto.getTelLinea();
    this.celular = dto.getCelular();
  }

  public void Save() throws SQLException {
    MedicoDTO dto = new MedicoDTO(-1, nombre, apellido, dni, matricula, idEspecialidad, telLinea, celular);
    MedicoDAO dao = MedicoDAO.createDAO();
    id = dao.Save(dto);
  }

  public void Update() throws SQLException {
    MedicoDTO dto = new MedicoDTO(id, nombre, apellido, dni, matricula, idEspecialidad, telLinea, celular);
    MedicoDAO dao = MedicoDAO.createDAO();
    dao.Update(dto);
  }

  public static ArrayList<MedicoDTO> All() throws SQLException {
    MedicoDAO dao = MedicoDAO.createDAO();
    return dao.All();
  }

  public static MedicoDTO SearchByID(int id) throws SQLException {
    MedicoDAO dao = MedicoDAO.createDAO();
    return dao.MedicoDTO(id);
  }

  public static ArrayList<MedicoDTO> SearchByNombreApellido(String name) throws SQLException {
    MedicoDAO dao = MedicoDAO.createDAO();
    return dao.SearchByNombreApellido(name);
  }

  public boolean CoberturaMatch(int idObraSocial, int idPlan) throws SQLException {
    ArrayList<CoberturaDTO> coberturas = Cobertura.SearchByMedicoID(id);
    for (CoberturaDTO c : coberturas) {
      if (c.getIdObraSocial() == idObraSocial && c.getIdPlanObraSocial() == idPlan) {
        return true;
      }
    }
    return false;
  }

  public int getId() {
    return id;
  }

  public String getNombre() {
    return nombre;
  }

  public String getApellido() {
    return apellido;
  }

  public int getDni() {
    return dni;
  }

  public String getMatricula() {
    return matricula;
  }

  public int getIdEspecialidad() {
    return idEspecialidad;
  }

  public String getTelLinea() {
    return telLinea;
  }

  public String getCelular() {
    return celular;
  }

}
